#include <stdio.h>
#include <assert.h>
#include <string.h>
#include"../include/io_buf.h"


io_buf::io_buf(int size):_capacity(size),_length(0),_head(0),_next(nullptr)
{
    _data=new char[_capacity];
    assert(_data);
}

void io_buf::clear(){
    _length=_head=0;
}

void io_buf::adjust(){
    //如果起始位置不是头
    if(_head!=0){
        //如果有效长度不为0
        if(_length!=0){
            memmove(_data,_data+_head,_length);
        }
        _head=0;
    }
}

//将别的数据拷贝给自己，拷贝方式是直接覆盖
void io_buf::copy(const io_buf *other){
    memcpy(_data,other->_data+other->_head,other->_length);
    _head=0;
    _length=other->_length;
}

void io_buf::pop(int len){
    _head=_head+len;
    _length=_length-len;
}